package org.osiris.client.proyectos;

import java.util.ArrayList;
import java.util.List;

import org.osiris.client.comandos.ComandoAltaProyectos;
import org.osiris.client.model.EstadoProyectoViewBean;
import org.osiris.client.model.ProyectoViewBean;
import org.osiris.client.model.UsuarioViewBean;
import org.osiris.client.services.BussinessInterfaceService;
import org.osiris.client.services.BussinessInterfaceServiceAsync;
import org.osiris.client.utils.MasterGenerator;

import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.LabelField;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;

public class BusquedaProyecto extends LayoutContainer {

	UsuarioViewBean operador;
	public BusquedaProyecto(UsuarioViewBean op) {
		
		operador=op;
		final ListStore <ProyectoViewBean> proyectos=new ListStore<ProyectoViewBean>(); 
		
		final BussinessInterfaceServiceAsync bussinessInterfaceServiceAsync=BussinessInterfaceService.Util.getInstance();
		
		VerticalPanel verticalPanel = new VerticalPanel();
		verticalPanel.setSpacing(5);
		verticalPanel.setHeight("420");
		
		HorizontalPanel horizontalPanel = new HorizontalPanel();
		horizontalPanel.setSpacing(5);
		
		LabelField lblfldNombre = new LabelField("Nombre");
		horizontalPanel.add(lblfldNombre);
		
		final TextField <String>nombre = new TextField<String>();
		horizontalPanel.add(nombre);
		nombre.setWidth("100");
		
		
		LabelField lblfldestado= new LabelField("Estado");
		horizontalPanel.add(lblfldestado);
		
		final ComboBox<EstadoProyectoViewBean> estado = MasterGenerator.getCombosEstadoProyecto();
		horizontalPanel.add(estado);
		estado.setWidth("100");
		
		LabelField lblfldReferencia = new LabelField("Referencia");
		horizontalPanel.add(lblfldReferencia);
		
		final TextField<String> referencia = new TextField<String>();
		horizontalPanel.add(referencia);
		referencia.setWidth("100");
		
		
		LabelField lblfldDescripcin = new LabelField("Descripci\u00F3n");
		horizontalPanel.add(lblfldDescripcin);

		
		final TextField<String> descripcion = new TextField<String>();
		horizontalPanel.add(descripcion);
		
		LabelField lblfldCliente = new LabelField("Cliente");
		horizontalPanel.add(lblfldCliente);
		
		final TextField <String>cliente = new TextField<String>();
		horizontalPanel.add(cliente);
		
		
		Button btnFiltrar = new Button("Filtrar");
		
		SelectionListener<ButtonEvent> listener=new SelectionListener<ButtonEvent>(){

			@Override
			public void componentSelected(ButtonEvent ce) {
				AsyncCallback<List<ProyectoViewBean>> callback=new AsyncCallback<List<ProyectoViewBean>>(){

					@Override
					public void onFailure(Throwable caught) {
						// TODO Auto-generated method stub
						
					}

					@Override
					public void onSuccess(List<ProyectoViewBean> result) {
						if(result!=null){
							proyectos.removeAll();
							proyectos.add(result);
						}
						
					}
					
				};
				String est=null;
				try{
					est=estado.getSelection().get(0).getnombre();
				}catch(Exception me){}
				
				bussinessInterfaceServiceAsync.buscarProyectos(cliente.getValue(),
						descripcion.getValue(),est , 
						null, null, nombre.getValue(), referencia.getValue()
						, null, callback);
				
			}};
		btnFiltrar.addSelectionListener(listener);
		
		horizontalPanel.add(btnFiltrar);
		verticalPanel.add(horizontalPanel);
		
		HorizontalPanel horizontalPanel_1 = new HorizontalPanel();
		List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
		
		ColumnConfig clmncnfgId = new ColumnConfig("idProyecto", "ID", 50);
		configs.add(clmncnfgId);
		
		ColumnConfig clmncnfgNombre = new ColumnConfig("nombre", "Nombre", 150);
		configs.add(clmncnfgNombre);
		
		ColumnConfig clmncnfgReferencia = new ColumnConfig("referencia", "Referencia", 150);
		configs.add(clmncnfgReferencia);
		
		ColumnConfig clmncnfgDescripcin = new ColumnConfig("resumen", "Resumen", 200);
		configs.add(clmncnfgDescripcin);
		
		ColumnConfig clmncnfgEstado = new ColumnConfig("estado", "Estado", 100);
		configs.add(clmncnfgEstado);
		
		ColumnConfig clmncnfgFechaAlta = new ColumnConfig("fechaalta", "Fecha alta", 150);
		configs.add(clmncnfgFechaAlta);
		
		ColumnConfig clmncnfguser= new ColumnConfig("responsable", "Responsable", 150);
		configs.add(clmncnfguser);
		
		final Grid<ProyectoViewBean> grid = new Grid<ProyectoViewBean>(proyectos, new ColumnModel(configs));
		horizontalPanel_1.add(grid);
		grid.setSize("980", "300");
		grid.setBorders(true);
		verticalPanel.add(horizontalPanel_1);
		
		HorizontalPanel horizontalPanel_2 = new HorizontalPanel();
		horizontalPanel_2.setSpacing(5);
		
		Button btnAlta = new Button("Alta");
		
		btnAlta.addSelectionListener(new SelectionListener<ButtonEvent>(){

			@Override
			public void componentSelected(ButtonEvent ce) {
				ComandoAltaProyectos com=new ComandoAltaProyectos(operador,null);
				com.execute();
				
			}});
		
		horizontalPanel_2.add(btnAlta);
		Button btncnt= new Button("consulta");
		
		btncnt.addSelectionListener(new SelectionListener<ButtonEvent>(){
			
			@Override
			public void componentSelected(ButtonEvent ce) {
				ProyectoViewBean sel = grid.getSelectionModel().getSelection().get(0);
				ComandoAltaProyectos com=new ComandoAltaProyectos(operador,sel);
				com.execute();
				
			}});
		
		PagingToolBar pagingToolBar = new PagingToolBar(10);
		verticalPanel.add(pagingToolBar);
		
		horizontalPanel_2.add(btncnt);
		verticalPanel.add(horizontalPanel_2);
		horizontalPanel_2.setWidth("980");
		add(verticalPanel);
	}

}
